package com.zkjl.protect_business.service;



import com.zkjl.protect_business.dto.OrganizationDTO;
import com.zkjl.protect_business.entity.Organization;
import com.zkjl.protect_business.vo.OrganizationVO;
import com.zkjl.protect_business.vo.statistic.GroupVO;

import java.util.List;
import java.util.Map;

public interface OrganizationService {

    /**
     * 保存单位
     *
     * @param organizationDTO
     * @return
     */
    Organization saveOrUpdate(OrganizationDTO organizationDTO, String id);

    /**
     * 修改单位
     *
     * @param organizationDTO
     * @return
     */
    Organization update(OrganizationDTO organizationDTO, String id);


    /**
     * 获取单位树形结构
     * @return
     */
    List<OrganizationVO> getOrganizationTree();

    /**
     * 获取单位列表
     * @return
     */
    List<Organization> list();


    /**
     * 获取所有子单位id
     * @return
     */
    List<String> listChildrenIds(String pid);



    /**
     * 获取所有子单位id
     * @return
     */
    List<String> listChildrenIdsAndOneself(String pid);

    /**
     * 获取所有子单位 包含本级
     * @return
     */
    List<Organization> listChildrens(String pid);

    /**
     * 获取所有子单位id
     * @return
     */
    List<String> listIdChildrens(String pid);


    /**
     * 查询机构
     * @param name 可能是编号也可能是名字
     * @return
     */
    Organization find(String name);

    /**
     * 获取所有父级单位名称，包含自身
     * @param name
     * @return
     */
    List<String> findAllPame(String name);

    /**
     * 获取机构的所有上家名称
     * @param id
     * @return
     */
    List<String> findAllPname(String id);


    /**
     * 获取父级名称
     * @param id
     * @return
     */
    String findPname(String id);



    /**
     * 获取单位详情
     * @param id
     * @return
     */
    Organization get(String id);


    /**
     * 获取单位所属地区分组
     * @return
     */
    List<String> getOrgRegionGroup();

    /**
     * 删除单位
     * @param id
     * @return
     */
    Boolean del(String id);




}
